package com.reflex;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;

//利用反射机制调用Person类中本类自己定义的所有无参且公开的方法
public class Text02 {
    public static void main(String[] args) throws Exception {
        Class<?> aClass = Class.forName("com.reflex.Person");
        Object object = aClass.newInstance();

        //获取本类所有构造器getDeclaredConstructors
        Constructor<?>[] declaredConstructors = aClass.getDeclaredConstructors();
        for (Constructor<?> declaredConstructor : declaredConstructors) {
            // 如果方法的参数个数为0，就是无参构造方法
            if (declaredConstructor.getParameterTypes().length == 0) {
                System.out.println(declaredConstructor.getName());
            }
        }


        // 获取本类所有方法getDeclaredMethods
        Method[] declaredMethods = aClass.getDeclaredMethods();
        for (Method declaredMethod : declaredMethods) {
            // 如果方法的参数个数为0，就是无参方法,且是公开的方法
            if ((declaredMethod.getParameterTypes().length == 0) && declaredMethod.getModifiers() == Modifier.PUBLIC) {
                System.out.println(declaredMethod.getName());
            }
        }

    }
}
